<html>
<body>
<h1>Guards</h1>
<p>
Guards are written as comma separated list of (in-)
equalities. The syntax of guards is defined by the 
grammar for <tt>GList</tt>:
<pre>

GList ::= [Guard (',' Guard)*]
Guard ::= CGuard | IGuard

CGuard ::= ID REL CExpr | ID REL ID
  | ID REL ID + CExpr 
REL ::= '&lt;' | '&lt;=' | '&gt;=' | '&gt;' | '=='

IGuard ::= IExpr REL IExpr
  | IExpr != IExpr
IExpr ::= ID | ID'['IExpr']' | NAT
  | '-' IExpr | '(' IExpr ')' | IExpr OP IExpr
  | '(' IGuard '?' IExpr ':' IExpr ')'
</pre>

<p>where <tt>CGuard</tt> is the grammar for guards over clocks,
and <tt>IGuard</tt> the grammar for guards over (bounded)
integer variables.

<h2>Examples:</h2>
<ul>
<li><tt>x &gt;= 1, x &lt;= 2</tt> <br> <tt>x</tt> is in the interval [1,2].
<li><tt>x &lt; y</tt> <br> <tt>x</tt> is (strictly) less than <tt>y</tt>.
<li><tt>(i[0]+1) != (i[1]*10)</tt> <br> an integer guard.
</ul>

</body>
</html>
